/**
 * 文件名称:  Config.java
 * 文件序号:  序号
 * 内容描述:  文件简单描述，多行换行书写
 * 版权声明:  山东鸿蝶信息技术有限公司
 * 创建用户:  zhangkai
 * 创建日期:  2017/2/24 16:21
 * 修改用户:  无
 * 修改日期:  无
 * 修改说明:  无
 * 文件版本:  V1.0
 * 文件路径:
 */

package com.hongdee.crm.schedule;


import com.hongdee.crm.activity.service.ITCrmCarActivityService;
import com.hongdee.crm.statistics.task.service.ITCrmCarCountTaskService;
import com.hongdee.crm.task.service.ICarBaseCountService;
import com.hongdee.crm.task.service.ITCrmCarWarrantyTaskService;
import com.hongdee.crm.task.service.ITCrmTimeTaskService;
import com.hongdee.crm.task.vw.service.ITCrmVwTaskService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 名  称:Config
 * 类  型: class
 * 描  述: 配置定时任务
 * 路  径:com.hongdee.crm.schedule
 * 作  者:zhangkai
 * 日  期:2017/2/24 16:21
 */
@Component
public class Config {
    private Logger logger = LoggerFactory.getLogger(Config.class);
    //流失车辆计算

    //基盘车辆计算
    @Autowired
    private ICarBaseCountService carBaseCountService;

    @Autowired
    private ITCrmTimeTaskService crmTimeTaskService;

    @Autowired
    private ITCrmVwTaskService vwTaskService;

    /*质保 延保*/
    @Autowired
    private ITCrmCarWarrantyTaskService crmCarWarrantyTaskService;
    /*事故 质保 定保车辆回店保养率 */
    @Autowired
    private ITCrmCarCountTaskService crmCarCountTaskService;

    //市场活动
    @Autowired
    private ITCrmCarActivityService activityService;
    /**
     * 每天凌晨一点计算流失车辆数据
     */
    @Scheduled(cron = "0 0 1 * * ?")
    public void crateLostCar() {

        try {
         //   carBaseCountService.countLostCarQuartz();
        } catch (Exception e) {
            logger.error("计算流失车辆数据" + e.getMessage());
        }
    }


    /**
     * 每天凌晨一点计算基盘新车增长
     */
    @Scheduled(cron = "0 0 1 * * ?")
    public void createBase() {
        try {
           // carBaseCountService.countBaseCarQuartz();
        } catch (Exception e) {
            logger.error("计算基盘车辆数据" + e.getMessage());
        }
    }

    /**
     * 每天凌晨一点重新计算一下车龄
     */
    @Scheduled(cron = "0 40 0 * * ?")
    public void createAge() {
        try {
          //  carBaseCountService.countCarAgeQuartz();
        } catch (Exception e) {
            logger.error("计算基盘车辆数据" + e.getMessage());
        }
    }

    /**
     * 保险、工单任务 每天执行 凌晨30分计算
     *
     * @throws Exception
     */
    @Scheduled(cron = "0 30 0 * * ?")
    public void maintainDayTask() throws Exception {
        crmTimeTaskService.maintainTimeTaskDay();
        carBaseCountService.updateExCarSeriesQuartz();
        // carBaseCountService.updateInCarInfoQuartz();
        //刷新延保起始里程
        carBaseCountService.updateExCarMileQuartz();
        //质保
        //crmCarWarrantyTaskService.updCarWarrantyInfoQuartz();
        //延保
        //crmCarWarrantyTaskService.updCarExsuranceInfoQuartz();



    }

    /**
     * 首保、二保、定保月度任务，每月28日 凌晨3点执行
     *
     * @throws Exception
     */
    @Scheduled(cron = "0 0 4 28 * ?")
    public void maintainMonthTask() throws Exception {
        // crmTimeTaskService.maintainTimeTaskMonth();
    }

    /**
     * 保险、关爱、年审、流失类定时任务 每月28号凌晨2点执行
     *
     * @throws Exception
     */
    @Scheduled(cron = "0 0 5 28 * ?")
    public void bgnlDayTask() throws Exception {
//        crmTimeTaskService.bngTaskDay();
    }

    /**
     * 车辆相关定时任务 凌晨3点执行
     *
     * @throws Exception
     */
    @Scheduled(cron = "0 0 2 * * ?")
    public void carDayTask() throws Exception {
        //回厂相关定时任务 2017/10/19 注释 by王帅
//        crmTimeTaskService.carBackFacTaskDay();
        //更新车辆销售数据
//        crmTimeTaskService.updFromCompanyQuartz();
        //更新车辆标签信息
        crmTimeTaskService.carlabelTaskDay();
        //更新SAID
//        crmTimeTaskService.updCrmTaskSaIdQuartz();
        //根据延保类型写入延保类型ID
        carBaseCountService.updateExCarTypeQuartz();
        //刷新车辆行驶里程
        carBaseCountService.updateRunMileQuartz();
        //刷新延保记录车辆ID及车型
        carBaseCountService.updateExCarSeriesQuartz();
        //刷新续保记录车辆ID及车型
        carBaseCountService.updateInCarInfoQuartz();
        //刷入续保类型
        carBaseCountService.updateInTypeQuartz();
    }

    /**
     * 更新大众车辆车型车系
     *
     * @throws Exception
     */
    @Scheduled(cron = "0 0 2 * * ?")
    public void updDzBrand() throws Exception {
        String companyId = "8a1029015b612d40015b6142c2a50470";
        vwTaskService.updDzBrandQuartz(companyId);
         companyId = "8a1029015d205cfc015d3045814861b4";
        vwTaskService.updDzBrandQuartz(companyId);

    }

    /**
     * 车辆回瞓保养率 事故、质保、定保车辆
     * @throws Exception
     */
    @Scheduled(cron = "0 0 5 * * ?")
    public void carBackToFacRaing() throws Exception {
        //事故车车辆回店保养率
        crmCarCountTaskService.accidentCarBackToFacQuartz();
        //质保车车辆回店保养率
        crmCarCountTaskService.warrantyCarBackToFacQuartz();
        //定保车车辆回店保养率
        crmCarCountTaskService.mainainCarBackToFacQuartz();

        //市场活动自动挂载工单
         activityService.autoRefWorkOrder();
    }
}
